#ifndef __DELAY_H
#define __DELAY_H	
#include <STC8HX.h>
#include "intrins.h"

void delay1us();			//延迟1微秒
void delay5us();			//延迟5微秒
void delay10us();			//延迟10微秒
void delay50us();			//延迟50微秒
void delay100us();			//延迟100微秒
void delay1ms();			//延迟1毫秒
void delay(uint16 time);	//延迟time毫秒

//========================================================================
// 描述: 延迟1微秒.
// 参数: none.
// 返回: none.
//========================================================================
void delay1us()		//@24.000MHz
{
	uint8 i;

	i = 6;
	while (--i);
}

//========================================================================
// 描述: 延迟5微秒.
// 参数: none.
// 返回: none.
//========================================================================
void delay5us()		//@24.000MHz
{
	uint8 i;

	i = 38;
	while (--i);
}

//========================================================================
// 描述: 延迟10微秒.
// 参数: none.
// 返回: none.
//========================================================================
void delay10us()		//@24.000MHz
{
	uint8 i;

	i = 78;
	while (--i);
}

//========================================================================
// 描述: 延迟50微秒.
// 参数: none.
// 返回: none.
//========================================================================
void delay50us()		//@24.000MHz
{
	uint8 i, j;

	_nop_();
	i = 2;
	j = 140;
	do
	{
		while (--j);
	} while (--i);
}

//========================================================================
// 描述: 延迟100微秒.
// 参数: none.
// 返回: none.
//========================================================================
void delay100us()		//@24.000MHz
{
	uint8 i, j;

	i = 4;
	j = 27;
	do
	{
		while (--j);
	} while (--i);
}

//========================================================================
// 描述: 延迟1毫秒.
// 参数: none.
// 返回: none.
//========================================================================
void delay1ms()	//1毫秒@24.000MHz
{
  uint8 i, j;
  _nop_();
  i = 32;
  j = 40;
  do { while (--j);} while (--i);
}

//========================================================================
// 描述: 延迟指定毫秒.
// 参数: 延迟时间（1-65535）.
// 返回: none.
//========================================================================
void delay(uint16 time)
{
  if(time < 1)
  {
	  time = 1;
  }	
  do { delay1ms();} while (--time);
}

#endif		//delay.h